Raspberry Pi_2

3.라즈베리파이 원격 연결

3.1 원격연결을 위한 준비

1) 영문설정

초기에 국가를 Korea로 설정하여 OS언어를 한글로 설정하였으나 추후 클러스팅시 문제가 발생할 수 있으므로 영문으로 다시 설정한다. English1.jpg 라즈베리파이 실행 후 메뉴에서 Raspberry PI Configuration을 선택한다. English2.jpg English3.jpg Localization에서 언어를 영어로, 지역을 US로 설정한다. English4.jpg 언어를 한글로 이용하고 싶은경우 우측 상단의 키보드 버튼을 누르면 한글을 입력할 수 있다.(영문키보드의 경우)

2) IP 확인

라즈베리파이에서 LXTerminal을 연 후 ifconfig를 입력한다. ipcheck1.jpg 위 이미지에서Wifilan의 ip가 기숙사 공유기의 경우 192.168.0.4로 설정되어 있는 걸 알 수 있다.

3) 원격연결의 원리

cloud.png 동일한 공유기 혹은 서버에 연결된 라즈베리파이와 PC를 사이에 공유기혹은 서버가 매개체 역할을 하여 자료를 원격으로 조작 혹은 전송할 수 있게 한다.

3.2 SSH를 이용한 원격연결

1) SSH란

SSH는 Secure SHell의 약자로 공개 키 방식의 암호 방식을 사용하여 원격지 시스템에 접근하여 암호화된 메시지를 전송할 수 있는 시스템.

2) PuTTY

위 SSH를 이용하여 라즈베리파이와 외부에서 접속하기 위해 PuTTY라는 프로그램을 이용할 것이다. PuTTY1.PNG PuTTY2.PNG https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html을 들어가서 다운로드 받은 후 실행하면 다음과 같다. PuTTY3.PNG 위에서 내부IP로 192.168.0.4를 부여받았으므로 IP adress를 192.168.0.4로 입력하고 자동으로 IP의 22번 포트로 연결이 되게 설정이 되어있다. 연결타입을 SSH로 설정하고 OPEN을 누른다 PuTTY4.PNG PuTTY5.PNG ID와 Password 를 입력하게 되어있는데 기본설정의 경우 ID는 pi이고 Password는 raspberry이다. 이를 입력하면 SSH를 통해 원격연결이 가능하게 된다.

3.3 VNC를 이용한 원격연결

1) VNC란

VNC(Virtual Network Computing, 가상 네트워크 컴퓨팅)는 컴퓨터 환경에서 RFB 프로토콜을 이용하여 원격으로 다른 컴퓨터를 제어하는 그래픽 데스크톱 공유 시스템이다. 연결시 PC의 화면에 VNC viewer를 통해 다른 컴퓨터의 화면이 나타난다.

2)VNC Viewer

VNC를 이용하기 위해서는 VNC Viwer라는 프로그램이 필요하다. https://www.realvnc.com/en/connect/download/viewer/windows/에 들어가서 Windows용 VNC Viewer를 다운로드한다. VNClogin1.PNG VNClogin.PNG VNC viwer를 실행시 SSH와 비슷한 형식으로 IP, ID, Password를 입력하는 창이 나온다. SSH와 동일하게 입력한다. 단 VNC의 경우 기본 포트가 5900이기 때문에 포트를 5900으로 입력한다. VNC.PNG VNCsuccess.PNG VNC Viwer를 통해 라즈베리파이의 화면과 동일하게 나타나면 원격조작이 가능하게 된다.

3.4 WinSCP를 이용한 파일 전송

1) WinSCP란

WinSCP(Windows Secure CoPy)는 마이크로소프트 윈도용으로 개발된 자유 및 오픈 소스 SFTP, SCP 및 FTP 클라이언트이다. 주요 기능은 로컬 및 원격 컴퓨터 간 보안 파일 전송이다. 그뿐 아니라 WinSCP는 기본적인 파일 관리자와 파일 동기화 기능을 제공한다.

2)WinSCP

https://winscp.net/eng/download.php에서 WinSCP를 다운로드 받을 수 있다. WinSCPikon.PNG WinSCPlogin.PNG SSH나 VNC와 마찬가지로 IP:192.168.0.4 ID:pi Password:raspberry를 입력한다 winSCP.PNG winSCPmove.PNG 왼쪽이 연결한 PC의 파일이고 오른쪽이 라즈베리파이의 MicroSD카드내부의 파일이다. 단순히 파일을 드래그해서 옮겨도 파일을 전송할 수 있다.

4. 슈퍼컴퓨팅의 개요

4.1 슈퍼컴퓨팅의 개념

슈퍼컴퓨터는 뛰어난 연산능력을 가진 특별한 컴퓨터로 연산 부하가 많은 애플리케이션에서 이용된다.이용 예는 다음과 같다.

  • 날씨 예측
  • 기후 조사
  • 분자 모델링
  • 물리 시뮬레이션
  • 양자메커니즘
  • 기름과 기체 확산

4.2 클러스터

클러스터링: 수많은 연산 노드를 서로 인접한 거리에 위치시킴으로써 통신에 소요되는 시간을 절약하고 대부분의 연산능력을 계산이 필요한 문제에 이용한다.

1) 이종 클러스터

클러스터의 모든 노드가 정확히 동일한 하드웨어 구성을 갖지 않을 때의 클러스터

2) 베오울프 클러스터

클러스터의 모든 노드가 정확히 동일한 하드웨어 구성을 가질 때 베오울프클러스터라 한다.

4.3 병렬성과 동시성

1) 병렬성

병렬성이란 연산 태스크가 병렬로 수행되는 것을 의미한다. 이것은 또한 태스크가 동시에 수행된다는 것을 의미한다. 병렬성은 주로 연산의 양이 많은 문제의 경우에 사용된다. 연산의 양이 많은 문제는 종종 연산이 적은 하위 문제들로 나눠지기 때문에 병렬적으로 해결할 수 있다.

2) 동시성

동시성은 많은 연산 태스크가 동시에 처리되는 것을 의미한다. 병렬성에서는 각 노드가 같은 시간 동안 각자의 태스크를 실행한다면. 동시성에서는 한 연산이 다른 연산을 기다리지 않고 진행될 수 있으며, 하나 이상의 연산이 진행될 수 있다는 것을 의미한다.

3) 병렬 프로그래밍

모든 클러스터와 슈퍼컴퓨터는 연산의 관점에서 거대한 태스크를 작은 태스크로 분해햐고, 개별 결과를 다시 모아 최종 결과를 도출하기 위해 병렬성을 사용한다. 이러한 연산유형을 지원하기 위한 프로그래밍을 병렬 프로그래밍이라고 한다.

5. 메시지 전달 인터페이스(MPI)

5.1 메시지 전달 인터페이스

메시지 전달 인터페이스(Message Passing Interface, MPI)는 분산 및 병렬 처리에서 정보의 교환에 대해 기술하는 표준이다. 병렬 처리에서 정보를 교환할 때 필요한 기본적인 기능들과 문법, 그리고 프로그래밍 API 에 대해 기술하고 있지만 구체적인 프로토콜이나 각각의 구현에 대한 것에 대해서는 기술하지 않는, 하나의 거시적인 테두리를 정해주는 표준으로 이해할 수 있다.

  • MPI는 라이브러리를 위한 상세 사양이다. MPI 자체는 라이브러리가 아니다.
  • MPI의 목적은 메시지 전달 표준이 실용적이여야 하며, 이식 가능해야 하고, 호환 가능해야 한다는 것이다.
  • 실제 MPI 라이브러리들은 MPI 표준이 적용되는 방법에 따라 다르다.
  • MPI 표준은 버전이 계속 갱신되고 있다.

1) MPI의 특징

MPI는 모든 노드를 연결하는 네트워크와 분산 메모리를 포함하는 분산 시스템에 최적화됐다. MPIsystem.png 메시지 전달 인터페이스의 특징은 다음과 같다.

  • 단순성 : MPI 패러다임의 기본은전통적인 통신 작업이다.
  • 일반성 : 병렬 아키텍처에 내장된 대부분의 시스템에서 구현될 수 있다.
  • 성능 : 구현은 기본 하드웨어의 속도와 일치할 수 있다.
  • 확장성 : 동일한 프로그랩을 변경하지 않고 대규모 시스템에 적용할 수 있다.

2) MPI의 구현

MPI가 라이브러리가 아니라 메시지 전달 라이브러리의 개발을 위한 표준이기 때문에 몇 가지 MPI의 구현 사례가 존재한다. 가장 대중적인 MPI 구현 사례들은 다음과 같다.

  • MPICH
  • MP-MPICH(MP stands for multi-platform)
  • winmpich
  • HP's MPI
  • IBM's MPI
  • SGI's MPI
  • STAMPI
  • OpenMPI

5.2 MPI4PY

MPI4PY는 'MPI for Python'의 약자이다. MPI4PY는 파이썬에서 MPI 바인딩을 제공한다. 이는 멀티 프로세서로 구성된 컴퓨터를 사용하는 어떤 파이썬 프로그램도 실행 되도록 한다. 이 패키지는 MPI-1 / 2 / 3 표준이 있다. MPI4PY는 파이썬에서 병렬 프로그래밍에게 객체지향 인터페이스를 제공한다. MPI4PY는 어떤 파이썬 객체에도 지점간 통신과 군집 통신을 지원한다.

파이썬 데이터 관리
MPI4PY 인터페이스
MPI 통신

1) 파이썬, MPI4PY, MPI 조합을 사용하는 이유

파이썬은 고성능 컴퓨팅에서 가장 많이 사용되는 3대 프로그래밍 언어 중 하나다. 그 밖의 두 가지 언어는 C와 포트란이다. 이미 살펴봤듯이, 파이썬 구문은 배우기 쉽다. MPI는 HPC 및 병렬 프로그래밍을 위한 사실상의 표준이다. MPI는 1994년 이래 20년 동안 잘 확립됐다. MPI4PY는 파이썬에서 MPI를 구현하는 데 있어 좋은 평가를 받고 있으며, 깔끔하고 효율적이다. MPI4PY는 대부분의 MPI-2 표준을 포함한다. 그렇기 떄문에 MPI4PY를 포함한 파이썬 3를 라즈베리 파이에서 병렬 프로그래밍하기 위해 사용해야 한다.

2) 라즈비안에서 파이썬 3을 위한 MPI4PY 설치

LXTermial 에서 다음 명령을 실행한다.


sudo apt-get install python3-mpi4py -y


mpi4py.PNG 설치확인을 위해서 다음명령어를 실행한다.


mpirun hostname


mpi4pycheck.PNG


3) nmap의 설치

nmap은 네트워크 보안 스캐너로, 사용하고 있는 파이의 IP주소를 찾는 데 이용된다. 다음 명령어를 이용하여 nmap을 설치한다.


sudo apt-get install nmap


6. 슈퍼컴퓨터 구축

6.1 Micro SD 카드의 백업

파이 환경을 설정하고 업데이트하고 필요한 패키지와 유틸리티를 설치하기 위해서는 MicroSD카드의 백업을 만들어야 한다. 이 절차는 MicroSD 카드나 파이의 손상 및 분실이 발생할 경우, 백업으로 작업을 재개할 수 있기 때문에 반드시 필요하다. 라즈비안 OS가 설치될 때나 업데이트될 때에는 MicroSD 카드의 백업이 필요하다. 이외에도 프로젝트의 수행하기위해 필요한 패키지, 툴, 유틸리티를 설치하기 전과 후에는 실패를 대비하여 백업하는것이 좋다. 이를 위해서 Win32DiskImager라는 프로그램을 이용할 것이다. Win32DiskImager를 실행하면 다음과 같다. win32%20desk%20imager.PNG 원하고자 하는 백업 경로에 빈 텍스트 파일을 하나 만들어서 확장자명을 .img나 .IMG 확장자를 추가한다. backup.PNG 그런 다음 백업할 파일을 선택한 후 READ 버튼을 클릭하면 백업이 된다. %EB%B0%B1%EC%97%85.PNG